package com.piece.core.mongo.entity;

import com.alibaba.fastjson.annotation.JSONField;
import com.fasterxml.jackson.annotation.JsonFormat;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.data.annotation.Id;
import org.springframework.data.mongodb.core.index.CompoundIndex;
import org.springframework.data.mongodb.core.index.CompoundIndexes;
import org.springframework.data.mongodb.core.mapping.Document;
import org.springframework.data.mongodb.core.mapping.Field;
import java.io.Serializable;
import java.util.Date;

/**
 * 系统消息表 sys_message
 */
@Data
@NoArgsConstructor
@Document(collection = "sys_message")
@CompoundIndexes({
        @CompoundIndex(name = "index_sys_message", def = "{'id':1,'receiver':1}")
})
public class MongoMessage implements Serializable {

    /**
     * 消息主键
     */
    @Id
    private String id;

    /**
     * 消息类型
     * 0:短信 1:邮件 2:公告 3:消息
     */
    @Field("type")
    private String type;

    /**
     * 接收人
     */
    @Field("receiver")
    private String receiver;

    /**
     * 接收角色
     */
    @Field("receiver_role")
    private String receiverRole;

    /**
     * 标题
     */
    @Field("title")
    private String title;

    /**
     * 内容
     */
    @Field("content")
    private String content;

    /**
     * 跳转路由模块
     */
    @Field("router")
    private String router;

    /**
     * 路由参数
     */
    @Field("query")
    private String query;

    /**
     * 发布时间
     */
    @Field("start_time")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date startTime;

    /**
     * 有效截止日期
     */
    @Field("end_time")
    @JSONField(format = "yyyy-MM-dd HH:mm:ss")
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
    private Date endTime;

    /**
     * 读取状态（0已读 1未读）
     */
    @Field("status")
    private String status;

    /**
     * 时间描述
     */
    private String timeBefore;
}